/* Copyright (c) 2009-2010, Sean A.O. Harney <sharney3@gmail.com> */

#ifndef FUZZER_STMT_H
#define FUZZER_STMT_H


/* prototypes */
char *stmt_type_to_str(STMT_TYPE type);

ASL_NODE_P new_stmt_fuzzdata_pattern(char *pattern, size_t pattern_maxlen);
ASL_NODE_P new_stmt_fuzzdata_file(char *file);
ASL_NODE_P new_stmt_fuzzdata_random(size_t lb, size_t ub);
ASL_NODE_P new_stmt_target_dl(LLIST_P args, int ind_doubledollar,
			      char *dlfname, char *symbol);
ASL_NODE_P new_stmt_target_command(LLIST_P argv, int ind_doubledollar,
				   bool fuzz_stdin);
ASL_NODE_P new_stmt_target_socket(char *host, int port, int socket_type);
ASL_NODE_P new_stmt_start(int start_arg);
ASL_NODE_P new_stmt_flag_termination_exit(int status);
ASL_NODE_P new_stmt_flag_termination_signal(unsigned int signal);
ASL_NODE_P new_stmt_flag_termination_exit_any(void);
ASL_NODE_P new_stmt_flag_termination_signal_any(void);
ASL_NODE_P new_stmt_flag_termination_any(void);
ASL_NODE_P new_stmt_flag_memory_size(unsigned int kb);
ASL_NODE_P new_stmt_flag_memory_rss(unsigned int kb);
ASL_NODE_P new_stmt_flag_memory_pss(unsigned int kb);

ASL_NODE_P new_stmt_send(uint8_t * buf, size_t len);
ASL_NODE_P new_stmt_send_str(char *str);
ASL_NODE_P new_stmt_send_doubledollar(void);
ASL_NODE_P new_stmt_expect(void);
ASL_NODE_P new_stmt_print(EXPR_P expr);
ASL_NODE_P new_stmt_include(char *file);
ASL_NODE_P new_stmt_shell(char *command_str);
ASL_NODE_P new_stmt_repeat(EXPR_P expr, ASL_NODE_P stmt);
ASL_NODE_P new_stmt_if(EXPR_P expr, ASL_NODE_P stmt);
ASL_NODE_P new_stmt_return(EXPR_P expr);
ASL_NODE_P new_stmt_sleep(int secs);
ASL_NODE_P new_stmt_expr_stmt(EXPR_P expr);
ASL_NODE_P new_stmt_var_decl_initialized(EXPR_P assignment_expr);
ASL_NODE_P new_stmt_var_decl(char *varname);

#endif				/* FUZZER_STMT_H */
